import Vue from "vue";

import "normalize.css/normalize.css"; // A modern alternative to CSS resets

import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
// import locale from 'element-ui/lib/locale/lang/en' // lang i18n

import "@/styles/index.scss"; // global css

import App from "./App";
import store from "./store";
import router from "./router";

import * as directives from "@/directives"; // 引入自定义指令
import components from "@/components";
import * as filters from "@/filters";
import "@/icons"; // icon
import "@/permission"; // permission control
import CheckPermisson from "@/mixin/checkPermission";
import i18n from "@/lang"; // 引入多语言

// 引入quill-editor编辑器
import VueQuillEditor from "vue-quill-editor";
import "quill/dist/quill.core.css";
import "quill/dist/quill.snow.css";
import "quill/dist/quill.bubble.css";
Vue.use(VueQuillEditor);

// 引入region的模块，省市县街道选择

// set ElementUI lang to ENnpm install v-region --save
// Vue.use(ElementUI, { locale })
// 如果想要中文版 element-ui，按如下方式声明
Vue.use(ElementUI, {
  i18n: (key, value) => i18n.t(key, value),
});

// 注册全局组件
Vue.use(components);
// 注册自定义指令
Object.keys(directives).forEach((key) => {
  Vue.directive(key, directives[key]);
});

// 全局混入检查对象
Vue.mixin(CheckPermisson);
// 全局过滤器
Object.keys(filters).forEach((key) => {
  Vue.filter(key, filters[key]);
});
Vue.config.productionTip = false;

Vue.filter("dateFormat", function (originVal) {
  // 确保传入的时间戳是有效的数字，并且是毫秒级时间戳
  const timestamp = Number(originVal);
  if (isNaN(timestamp)) {
    return ""; // 或者返回一个默认值，比如 "Invalid date"
  }

  const dt = new Date(timestamp * 1000); // 如果传入的是秒级时间戳，乘以 1000 转换为毫秒
  const y = dt.getFullYear();
  const m = (dt.getMonth() + 1 + "").padStart(2, "0");
  const d = (dt.getDate() + "").padStart(2, "0");
  const hh = (dt.getHours() + "").padStart(2, "0");
  const mm = (dt.getMinutes() + "").padStart(2, "0");
  const ss = (dt.getSeconds() + "").padStart(2, "0");

  // 返回格式化后的日期时间字符串
  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
});

Vue.filter("formatDate", (timestamp) => {
  if (!timestamp) return "";
  const date = new Date(timestamp * 1000);
  return `${(date.getMonth() + 1).toString().padStart(2, "0")}-${date
    .getDate()
    .toString()
    .padStart(2, "0")}`;

  // 如果想要中文格式：
  // return `${date.getMonth() + 1}月${date.getDate()}日`;
});

// 创建vm
new Vue({
  el: "#app",
  router,
  store,
  i18n,
  render: (h) => h(App),
  // beforeCreate中模版未解析，且this是vm
  beforeCreate() {
    Vue.prototype.$bus = this; //安装全局事件总线
  },
});
